home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 3 / Cream of the Crop 3.iso / comm / wnos5src.zip / PKTDRVR.H < prev    next >
Text File  |  1993-08-09  |  4KB  |  118 lines

  1. #ifndef    _PKTDRVR_H
  2. #define    _PKTDRVR_H
  3.  
  4. #ifndef    _MBUF_H
  5. #include "mbuf.h"
  6. #endif
  7.  
  8. #ifndef    _IFACE_H
  9. #include "iface.h"
  10. #endif
  11.  
  12. #define    PK_MAX                3    /* Add extra interrupt hooks if you increase this */
  13.  
  14. /* Packet driver interface classes */
  15. #define    CL_NONE                0
  16. #define    CL_ETHERNET            1
  17. #define    CL_PRONET_10        2
  18. #define    CL_IEEE8025            3
  19. #define    CL_OMNINET            4
  20. #define    CL_APPLETALK        5
  21. #define    CL_SERIAL_LINE        6
  22. #define    CL_STARLAN            7
  23. #define    CL_ARCNET            8
  24. #define    CL_AX25                9
  25. #define    CL_KISS                10
  26. #define CL_IEEE8023            11
  27. #define CL_FDDI             12
  28. #define CL_INTERNET_X25     13
  29. #define CL_LANSTAR            14
  30. #define CL_SLFP             15
  31. #define    CL_NETROM            16
  32. #define CL_PPP                17
  33. #define NCLASS                18
  34.  
  35. /* Packet driver interface types (not a complete list) */
  36. #define    TC500                1
  37. #define    PC2000                10
  38. #define    WD8003                14
  39. #define    PC8250                15
  40. #define    ANYTYPE                0xffff
  41.  
  42. /* Packet driver function call numbers. From Appendix B. */
  43. #define    DRIVER_INFO            1
  44. #define    ACCESS_TYPE            2
  45. #define    RELEASE_TYPE        3
  46. #define    SEND_PKT            4
  47. #define    TERMINATE            5
  48. #define    GET_ADDRESS            6
  49. #define    RESET_INTERFACE        7
  50. #define GET_PARAMETERS        10
  51. #define AS_SEND_PKT            11
  52. #define    SET_RCV_MODE        20
  53. #define    GET_RCV_MODE        21
  54. #define    SET_MULTICAST_LIST    22
  55. #define    GET_MULTICAST_LIST    23
  56. #define    GET_STATISTICS        24
  57. #define SET_ADDRESS            25
  58.  
  59. /* Packet driver error return codes. From Appendix C. */
  60.  
  61. #define    NO_ERROR            0
  62. #define    BAD_HANDLE            1    /* invalid handle number */
  63. #define    NO_CLASS            2    /* no interfaces of specified class found */
  64. #define    NO_TYPE                3    /* no interfaces of specified type found */
  65. #define    NO_NUMBER            4    /* no interfaces of specified number found */
  66. #define    BAD_TYPE            5    /* bad packet type specified */
  67. #define    NO_MULTICAST        6    /* this interface does not support multicast */
  68. #define    CANT_TERMINATE        7    /* this packet driver cannot terminate */
  69. #define    BAD_MODE            8    /* an invalid receiver mode was specified */
  70. #define    NO_SPACE            9    /* operation failed because of insufficient space */
  71. #define    TYPE_INUSE            10    /* the type had previously been accessed, and not released */
  72. #define    BAD_COMMAND            11    /* the command was out of range, or not    implemented */
  73. #define    CANT_SEND            12    /* the packet couldn't be sent (usually    hardware error) */
  74. #define CANT_SET            13    /* hardware address couldn't be changed (> 1 handle open) */
  75. #define BAD_ADDRESS            14    /* hardware address has bad length or format */
  76. #define CANT_RESET            15    /* couldn't reset interface (> 1 handle open) */
  77.  
  78. typedef union {
  79.     struct {
  80.         unsigned char lo;
  81.         unsigned char hi;
  82.     } byte;
  83.     unsigned short word;
  84. } ureg;
  85.  
  86. #define    CARRY_FLAG    0x1
  87.  
  88. struct pktdrvr {
  89.     int class;                    /* Interface class (ether/slip/etc) */
  90.     int intno;                    /* Interrupt vector */
  91.     short handle1;                /* Driver handle(s) */
  92.     short handle2;
  93.     short handle3;
  94.     struct mbuf *buffer;        /* Currently allocated rx buffer */
  95.     struct mbuf *rcvq;            /* Receive queue */
  96.     struct iface *iface;
  97. };
  98.  
  99. extern struct pktdrvr Pktdrvr[];
  100.  
  101. /* In pktdrvr.c: */
  102. INTERRUPT pkint __ARGS((unsigned short bp, unsigned short di,
  103.      unsigned short si, unsigned short ds, unsigned short es,
  104.      unsigned short dx, unsigned short cx, unsigned short bx,
  105.      unsigned short ax, unsigned short ip, unsigned short cs,
  106.      unsigned short flags, int dev));
  107. int pk_send __ARGS((struct mbuf *bp,struct iface *iface,int32 gateway,
  108.     int prec,int del,int tput,int rel));
  109. void pkt_suspend __ARGS((void));
  110. void pkt_restore __ARGS((void));
  111.  
  112. /* In pkvec.asm: */
  113. INTERRUPT pkvec0 __ARGS((void));
  114. INTERRUPT pkvec1 __ARGS((void));
  115. INTERRUPT pkvec2 __ARGS((void));
  116.  
  117. #endif    /* _PKTDRVR_H */
  118.